{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d6c422b4",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "406067de",
   "metadata": {},
   "outputs": [],
   "source": [
    "import jieba"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "6b959afb",
   "metadata": {},
   "outputs": [],
   "source": [
    "import fasttext"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "8c7becc5",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n"
     ]
    }
   ],
   "source": [
    "fasttext_model = fasttext.load_model('../../dataset/fastText/cc.zh.300.bin')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "c42f76fb",
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_uy2cn_df = pd.read_csv('../datasets/商品分类关键词_维汉对照.csv', encoding='utf-8-sig', header=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e71c61cc",
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_cn_df = pd.read_csv('../datasets/商品分类关键词_汉语.csv', encoding='utf-8-sig', header=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "b6d1a47a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>keywords_uy</th>\n",
       "      <th>keywords_cn</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ماللار تۈرى</td>\n",
       "      <td>货品</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ئۆي جابدۇقلىرى</td>\n",
       "      <td>家具</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>شەخسىي ساغلاملىق</td>\n",
       "      <td>个人健康</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>كىيىم-زىبۇزىننەت</td>\n",
       "      <td>服饰</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ئېلېكتىر سايمانلىرى</td>\n",
       "      <td>电器</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           keywords_uy keywords_cn\n",
       "0          ماللار تۈرى          货品\n",
       "1       ئۆي جابدۇقلىرى          家具\n",
       "2     شەخسىي ساغلاملىق        个人健康\n",
       "3     كىيىم-زىبۇزىننەت          服饰\n",
       "4  ئېلېكتىر سايمانلىرى          电器"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cat_uy2cn_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "82ca956a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成维语对照的关键词列表\n",
    "keywords_uy = cat_uy2cn_df['keywords_uy'].tolist()\n",
    "keywords_cn = cat_uy2cn_df['keywords_cn'].tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "424784f3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['ماللار تۈرى',\n",
       " 'ئۆي جابدۇقلىرى',\n",
       " 'شەخسىي ساغلاملىق',\n",
       " 'كىيىم-زىبۇزىننەت',\n",
       " 'ئېلېكتىر سايمانلىرى']"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "keywords_uy[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "5adf2293",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['货品', '家具', '个人健康', '服饰', '电器']"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "keywords_cn[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "12be9b6e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成汉语的关键词列表\n",
    "keywords_cn2 = cat_cn_df['keywords'].tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "169d0c8d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['游戏话费', '服装鞋包', '手机数码', '家用电器', '美妆饰品']"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "keywords_cn2[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "0fd88538",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 获取单词词向量\n",
    "def get_word_vector(word, model=fasttext_model):\n",
    "\n",
    "    word_vector = model.get_word_vector(word)\n",
    "\n",
    "    return word_vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "b8b57f75",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 获取某句句向量\n",
    "def get_sentence_vector(sentence):\n",
    "\n",
    "    cut_words = jieba.lcut(sentence)\n",
    "\n",
    "    sentence_vector = None\n",
    "    \n",
    "    for word in cut_words:\n",
    "        word_vector = get_word_vector(word)\n",
    "\n",
    "        if sentence_vector is not None:\n",
    "            sentence_vector += word_vector\n",
    "        else:\n",
    "            sentence_vector = word_vector\n",
    "\n",
    "    sentence_vector = sentence_vector / len(cut_words)\n",
    "\n",
    "    return sentence_vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "42c3b9ae",
   "metadata": {},
   "outputs": [],
   "source": [
    "def cos_sim(vector_a, vector_b):\n",
    "    \"\"\"\n",
    "    计算两个向量之间的余弦相似度\n",
    "    :param vector_a: 向量 a\n",
    "    :param vector_b: 向量 b\n",
    "    :return: sim\n",
    "    \"\"\"\n",
    "    vector_a = np.mat(vector_a)\n",
    "    vector_b = np.mat(vector_b)\n",
    "    num = float(vector_a * vector_b.T)\n",
    "    denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)\n",
    "    cos = num / denom\n",
    "    sim = 0.5 + 0.5 * cos\n",
    "    return sim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "17cc12e4",
   "metadata": {},
   "outputs": [],
   "source": [
    "uy_cn_keymap = []\n",
    "uy_cn_unkeymap = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2681517a",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\envs\\Python\\Python37\\lib\\site-packages\\ipykernel_launcher.py:12: RuntimeWarning: invalid value encountered in true_divide\n",
      "  if sys.path[0] == '':\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ماللار تۈرى 货品 仓储货架 0.8046587220945259\n",
      "ماللار تۈرى 货品 服装货架 0.8196048297678495\n",
      "ماللار تۈرى 货品 货品支架 0.8979930193399859\n",
      "ئۆي جابدۇقلىرى 家具 家居建材 0.8562939654234677\n",
      "ئۆي جابدۇقلىرى 家具 商业/办公家具 0.8683742473413751\n",
      "ئۆي جابدۇقلىرى 家具 住宅家具 0.9345594835177955\n",
      "ئۆي جابدۇقلىرى 家具 城市家具 0.9433478587312957\n",
      "ئۆي جابدۇقلىرى 家具 服装店家具 0.9572587612043313\n",
      "ئۆي جابدۇقلىرى 家具 传琴家具 1.0\n",
      "شەخسىي ساغلاملىق 个人健康 个人护理/保健/按摩器材 0.823547873266826\n",
      "شەخسىي ساغلاملىق 个人健康 家庭/个人清洁工具 0.8405760010702996\n",
      "شەخسىي ساغلاملىق 个人健康 其它个人护理 0.868550564558803\n",
      "شەخسىي ساغلاملىق 个人健康 医疗健康服务 0.8781848571485827\n",
      "شەخسىي ساغلاملىق 个人健康 健康类原版书 0.8914536321809152\n",
      "شەخسىي ساغلاملىق 个人健康 润德大健康 0.8957255933266504\n",
      "كىيىم-زىبۇزىننەت 服饰 服装鞋包 0.907925025957097\n",
      "كىيىم-زىبۇزىننەت 服饰 服饰 0.9999999500185931\n",
      "ئېلېكتىر سايمانلىرى 电器 生活电器 0.9436532016909698\n",
      "ئېلېكتىر سايمانلىرى 电器 九威电器 1.0\n",
      "ئانا-بالىلار ئويۇنچۇق 母婴玩具 母婴用品 0.9395184790397799\n",
      "ئانا-بالىلار ئويۇنچۇق 母婴玩具 母婴儿童用品 0.9407527642729121\n",
      "يېمەك-ئىچمەك 饮食 保健食品/膳食营养补充食品 0.8331549653057072\n",
      "يېمەك-ئىچمەك 饮食 饮食营养 食疗 0.9120943176749434\n",
      "داڭلىق مەھسۇلات جەمگاھى 名品总汇 名品绿都 0.8257450164218387\n",
      "داڭلىق مەھسۇلات جەمگاھى 名品总汇 joyful world jewellery/忻世名品 0.8412497644296253\n",
      "داڭلىق مەھسۇلات جەمگاھى 名品总汇 建总汇 0.8639588321120365\n",
      "داڭلىق مەھسۇلات جەمگاھى 名品总汇 名品御草居 0.8863859679774015\n",
      "رەڭلىك گىرىم يۈرۈشلى 彩妆系列 彩妆/香水/美妆工具 0.8881716327349651\n",
      "رەڭلىك گىرىم يۈرۈشلى 彩妆系列 彩妆套装（新） 0.8902161245601734\n",
      "رەڭلىك گىرىم يۈرۈشلى 彩妆系列 唇部彩妆 0.904276776250198\n",
      "رەڭلىك گىرىم يۈرۈشلى 彩妆系列 面部彩妆 0.9091632716832565\n",
      "رەڭلىك گىرىم يۈرۈشلى 彩妆系列 其它彩妆 0.9388506552840696\n",
      "تۈك چۈشۈرۈش تەرتوختى 脱毛汗 除毛凝胶 0.8256072055630099\n",
      "تۈك چۈشۈرۈش تەرتوختى 脱毛汗 移动汗蒸房 0.8266813934129889\n",
      "تۈك چۈشۈرۈش تەرتوختى 脱毛汗 女士脱毛/剃毛器 0.8529424410357787\n",
      "گىرىم ۋە ئاسراش بۇيۇ 化妆和护肤品 彩妆/香水/美妆工具 0.8537054118478324\n",
      "گىرىم ۋە ئاسراش بۇيۇ 化妆和护肤品 面部彩妆 0.8627509167009196\n",
      "گىرىم ۋە ئاسراش بۇيۇ 化妆和护肤品 化妆/美容工具 0.9071528149010815\n",
      "گىرىم ۋە ئاسراش بۇيۇ 化妆和护肤品 化妆 0.9521291590600249\n",
      "ئاشخانا سايمانلىرى 炊事用具 厨房/烹饪用具 0.842583742230076\n",
      "ئاشخانا سايمانلىرى 炊事用具 烹饪用具 0.8615071028363486\n",
      "ئاشخانا سايمانلىرى 炊事用具 炉灶/炊事设备 0.8696291076022141\n",
      "تۇرمۇش ئېلىكتىربۇيۇم 生活电器 百货食品 0.8031695661900002\n",
      "تۇرمۇش ئېلىكتىربۇيۇم 生活电器 生活服务 0.8373330070001261\n",
      "تۇرمۇش ئېلىكتىربۇيۇم 生活电器 生活电器 1.0\n",
      "ئۇۋېلاش-سىلىقلاش 研磨 食物研磨器 0.8845188836837194\n",
      "چوڭلار ئەتكەن چېيى 成人奶茶 成人用品/情趣用品 0.8214201426402028\n",
      "چوڭلار ئەتكەن چېيى 成人奶茶 成人奶粉 0.8506362896341545\n",
      "چوڭلار ئەتكەن چېيى 成人奶茶 奶茶 0.9167644655379044\n",
      "ئەدىيال/يوتقان 毯子/被子 围巾/手套/帽子套件 0.8122268638743331\n",
      "ئەدىيال/يوتقان 毯子/被子 睡袋/凉席/枕头/床品 0.8668850703001927\n",
      "ئەدىيال/يوتقان 毯子/被子 被子 0.9298405670362144\n",
      "ئەدىيال/يوتقان 毯子/被子 被子/蚕丝被/羽绒被/棉被 0.9301727179394097\n",
      "ئەدىيال/يوتقان 毯子/被子 毯子 0.9387161403353357\n",
      "ئاياللار كېسىلى-ساغلاملىق 妇科疾病-健康 家居健康用品 0.8192297514084024\n",
      "ئاياللار كېسىلى-ساغلاملىق 妇科疾病-健康 健康医药 0.8267469584467727\n",
      "ئاياللار كېسىلى-ساغلاملىق 妇科疾病-健康 智能健康 0.8445674632391261\n",
      "ئاياللار كېسىلى-ساغلاملىق 妇科疾病-健康 其它健康/保健/检测 0.8703383196300793\n",
      "ئاياللار كېسىلى-ساغلاملىق 妇科疾病-健康 HEALTHMASTER/健康专家 0.8763835925374803\n",
      "ئاياللار كېسىلى-ساغلاملىق 妇科疾病-健康 中砫健康 0.8877378468467451\n",
      "ئاياللار كېسىلى-ساغلاملىق 妇科疾病-健康 JUNLINHENG HEALTHY CARE/君林恒健康 0.9048393959368961\n",
      "ئاياللار كېسىلى-ساغلاملىق 妇科疾病-健康 DINGWU HEALTH/定悟健康 0.9163788624399722\n",
      "سائەت 小时 96HOURS/96小时 0.8682985880860803\n",
      "سائەت 小时 四小时 0.9251433322378247\n",
      "زىبۇ-زىننەت 首饰 服装鞋包 0.8183532790980254\n",
      "زىبۇ-زىننەت 首饰 饰品/流行首饰/时尚饰品新 0.8787287934618631\n",
      "زىبۇ-زىننەت 首饰 运动首饰 0.928320547736782\n",
      "زىبۇ-زىننەت 首饰 其它首饰 0.9363614523342864\n",
      "زىبۇ-زىننەت 首饰 首饰展示架 0.969017741423856\n",
      "باشقىلار 其他 其他商品 0.8529361606676458\n",
      "باشقىلار 其他 其他 1.0\n",
      "بەدەن ئاسراش 身体保养 汽车零部件/养护/美容/维保 0.8073059399776195\n",
      "بەدەن ئاسراش 身体保养 眼镜配件、护理剂 0.8119010109063634\n",
      "بەدەن ئاسراش 身体保养 身体彩妆 0.8586150651546085\n",
      "بەدەن ئاسراش 身体保养 其他保养 0.9162422093101643\n",
      "ھەۋەس بۇيۇمى 情趣用品 情趣用品 1.0000000493836378\n",
      "يانفون خەۋەرلىشىش 手机通讯 游戏话费 0.8314744720507541\n",
      "يانفون خەۋەرلىشىش 手机通讯 手机数码 0.8935934065220985\n",
      "يانفون خەۋەرلىشىش 手机通讯 手机 0.932043585949756\n",
      "ھۇجرا كىيىمى 寝衣 睡衣上装 0.8019552336131509\n",
      "ھۇجرا كىيىمى 寝衣 抓绒衣裤 0.8138482354989811\n",
      "ھۇجرا كىيىمى 寝衣 衣衫衣饰 0.8269256328108779\n",
      "ماشىنا بېزەكلىرى 汽车装饰品 电子元器件市场 0.8078500820426622\n",
      "ماشىنا بېزەكلىرى 汽车装饰品 节庆用品/礼品 0.8093897661592548\n",
      "ماشىنا بېزەكلىرى 汽车装饰品 汽车零部件/养护/美容/维保 0.8388823208692748\n",
      "ماشىنا بېزەكلىرى 汽车装饰品 汽车服务 0.9141783102418048\n",
      "ماشىنا بېزەكلىرى 汽车装饰品 汽车改装 0.9157461083762568\n",
      "ماشىنا بېزەكلىرى 汽车装饰品 汽车零配件 0.9323611458758527\n",
      "ماشىنا بېزەكلىرى 汽车装饰品 汽车 0.9546802564060373\n",
      "ماشىنا بېزەكلىرى 汽车装饰品 汽车装饰灯 0.9608957357987943\n",
      "ئەرەنچە كىيىم 男装 服装鞋包 0.8248915129750667\n",
      "ئەرەنچە كىيىم 男装 男装 1.0\n",
      "رەقەملىك ئەسۋابلار 数字仪器 电子元器件市场 0.8060274192884896\n",
      "رەقەملىك ئەسۋابلار 数字仪器 美容美体仪器 0.8269306642425349\n",
      "رەقەملىك ئەسۋابلار 数字仪器 包装设备/标牌及耗材 0.8291627477021075\n",
      "رەقەملىك ئەسۋابلار 数字仪器 LED生产及检测设备 0.8306738170927147\n",
      "رەقەملىك ئەسۋابلار 数字仪器 实验室设备 0.8603357867534258\n",
      "رەقەملىك ئەسۋابلار 数字仪器 皮肤测试仪器 0.8724818950493771\n",
      "رەقەملىك ئەسۋابلار 数字仪器 理邦仪器 0.8840029726368803\n",
      "رەقەملىك ئەسۋابلار 数字仪器 XINBIAO INSTRUMENT/馨标仪器 0.8875234502238314\n",
      "رەقەملىك ئەسۋابلار 数字仪器 数字温控器 0.8906130839002705\n",
      "رەقەملىك ئەسۋابلار 数字仪器 恒幸仪器 0.9347514154142462\n",
      "ئانا-بالىلاركىيىمى - 母婴服装 服装鞋包 0.8877436403052396\n",
      "ئانا-بالىلاركىيىمى - 母婴服装 母婴用品 0.9212173983188173\n",
      "ئانا-بالىلاركىيىمى - 母婴服装 母婴儿童 0.9331355496579148\n",
      "ئانا-بالىلاركىيىمى - 母婴服装 母婴儿童用品 0.9434111177518452\n",
      "كۈتۈنۈش ئۈسكۈنىلىرى 养老设备 生活服务 0.8106296142526883\n",
      "كۈتۈنۈش ئۈسكۈنىلىرى 养老设备 智能设备 0.8559664458800784\n",
      "كۈتۈنۈش ئۈسكۈنىلىرى 养老设备 虚拟现实设备 0.8673678495518824\n",
      "كۈتۈنۈش ئۈسكۈنىلىرى 养老设备 安全检查设备 0.8717730083785962\n",
      "كۈتۈنۈش ئۈسكۈنىلىرى 养老设备 停车场设备设施 0.8750784710482671\n",
      "كۈتۈنۈش ئۈسكۈنىلىرى 养老设备 空气净化设备 0.8768423370986699\n",
      "شەخسىي ئەزا ئاسراش 个人器官保养 个人护理/保健/按摩器材 0.8378758398280033\n",
      "شەخسىي ئەزا ئاسراش 个人器官保养 其它个人护理 0.8622452496252854\n",
      "شەخسىي ئەزا ئاسراش 个人器官保养 其他保养 0.8867098847583563\n",
      "بۆرەك قۇۋۋەتلەش 补肾 食疗滋补营养 0.8158030314181686\n",
      "بۆرەك قۇۋۋەتلەش 补肾 滋补养生原料 0.8213743967537506\n",
      "قوش قاپاق چاپلىقى 双眼皮贴 数码家电保护贴 0.815030665499421\n",
      "قوش قاپاق چاپلىقى 双眼皮贴 贴吧超级会员 0.8517472489612656\n",
      "قوش قاپاق چاپلىقى 双眼皮贴 笔记本炫彩贴 0.8574947108765139\n",
      "قوش قاپاق چاپلىقى 双眼皮贴 修正贴 0.8705881656219028\n",
      "قوش قاپاق چاپلىقى 双眼皮贴 双眼皮贴 1.0000000540927845\n",
      "ئۈستەل-ئورۇندۇق/ئىشك 桌椅/门 办公设备/耗材/相关服务 0.802903089607246\n",
      "ئۈستەل-ئورۇندۇق/ئىشك 桌椅/门 电脑硬件/显示器/电脑周边 0.8034524618310981\n",
      "ئۈستەل-ئورۇندۇق/ئىشك 桌椅/门 文具电教/文化用品/商务用品 0.8212358788989738\n",
      "ئۈستەل-ئورۇندۇق/ئىشك 桌椅/门 干电池/充电电池/套装 0.824702496463118\n",
      "ئۈستەل-ئورۇندۇق/ئىشك 桌椅/门 儿童房/桌椅/家具 0.9240038297466944\n"
     ]
    }
   ],
   "source": [
    "# 遍历计算匹配最相似的中文文本，建立 维语-中文映射\n",
    "for uy, cn in zip(keywords_uy, keywords_cn):\n",
    "    a = get_sentence_vector(cn)\n",
    "    max_sim = 0\n",
    "    most_sim_word = ''\n",
    "    for cn2 in keywords_cn2:\n",
    "        b = get_sentence_vector(cn2)\n",
    "        if cos_sim(a, b) > max_sim:\n",
    "            # print(max_sim, cos_sim(a,b), cn, cn2)\n",
    "            most_sim_word = cn2\n",
    "            max_sim = cos_sim(a, b)\n",
    "            if max_sim >= 0.8:\n",
    "                uy_cn_keymap.append([uy, cn, most_sim_word, max_sim])\n",
    "                print(uy, cn, most_sim_word, max_sim)\n",
    "    if max_sim < 0.8:\n",
    "        uy_cn_unkeymap.append([uy, cn, most_sim_word, max_sim])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "20eacc83",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "8f6ab731",
   "metadata": {},
   "outputs": [],
   "source": [
    "keywords_uy2cn_df.to_csv('../datasets/123.csv', encoding='utf-8-sig', header=0, index = False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.7",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
